package com.qianfeng.shopping.util;

import java.io.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class ReadWriteTxt {
    // 读取txt
    public static Map<String,String> readTxt(File file){
        FileReader fr = null;
        BufferedReader br = null;
        Map<String,String> mapRead = new HashMap<>();
        try {
            fr = new FileReader(file);
            br = new BufferedReader(fr);
            String str = br.readLine();
            while(str!=null){
                // 放到map中
                mapRead.put(GetUuid.getUuid(),str);
                //  继续读取内容
                str =br.readLine();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                br.close();
                fr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return mapRead;
    }

    // 共通写入txt
    //  flag表示是否覆盖
    public static boolean writeTxt(File file,Map<String,String> map,boolean flag){
        FileWriter fw = null;
        BufferedWriter bw = null;
        try {
            // 覆盖
            fw = new FileWriter(file,flag);
            bw = new BufferedWriter(fw);
            //  如果flag是true 表示追加  注册操作   false表示覆盖 是删除或者修改操作
            Set<Map.Entry<String,String>> setNew = map.entrySet();
            Iterator<Map.Entry<String,String>> itNew = setNew.iterator();
            if (flag){
                // 注册  只写一个内容
                bw.newLine();
                while(itNew.hasNext()) {
                    Map.Entry<String, String> entry = itNew.next();
                    String str = (String) (entry.getValue());
                    bw.write(str);
                    // 只写一个数据 写完之后直接停止循环
                    break;
                }
            }else{
                // 最后一次循环写完之后不换行
                while(itNew.hasNext()) {
                    Map.Entry<String, String> entry = itNew.next();
                    String str = (String) (entry.getValue());
                    bw.write(str);
                    // 判断是否有下一个元素  到最后一个元素 结果false  不用换行
                    if(itNew.hasNext()){
                        bw.newLine();
                    }
                }
            }
            return true;
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                bw.flush();
                bw.close();
                fw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return false;
    }

}
